package com.spzx.payment.controller;

import com.spzx.common.core.web.controller.BaseController;
import com.spzx.common.core.web.domain.AjaxResult;
import com.spzx.payment.service.AlipayService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@Controller
@RequestMapping("alipay")
@Tag(name = "支付宝支付模块")
public class AlipayController extends BaseController {
    @Resource
    AlipayService alipayService;
    //异步回调接口：浏览器不会调用  等待支付宝回调
    @ResponseBody //返回的结果需要设置到响应体中 而不是转发或者重定向
    @Operation(summary = "异步回调接口：用户支付成功时 支付宝异步回调并传入用户支付的信息")
    @PostMapping("notifyUrl")
    public String notifyUrl(@RequestParam Map<String,String> params){
        System.out.println(params);
        //跳转到前端项目的订单支付完成的页面中
        //返回success代表 处理支付宝异步通知成功
        return alipayService.notifyUrl(params);
    }
    /*
        Controller接口响应的结果：
            @Controller注解
                直接返回字符串：会当作转发视图 跳转
                返回的字符串以redirect开始：会当作重定向试图 响应  浏览器会自动重定向

                @ResponseBody+ 任意的数据 ： 数据会转为json设置到响应体响应
                @RestController注解作用同上
     */
    //同步 或者 异步 回调接口  返回的结果都是浏览器 或者 支付宝要使用的
    @Operation(summary = "同步回调接口：用户支付成功时 支付宝回调并传入用户支付的信息")
    @GetMapping("returnUrl")
    public String returnUrl(@RequestParam Map<String,String> params){
//        System.out.println(params);
        //跳转到前端项目的订单支付完成的页面中
        return "redirect:http://www.spzx.com/#/pages/order/order";
    }
    @ResponseBody
    @Operation(summary = "待支付页面：确认支付")
    @GetMapping("submitAlipay/{orderNo}")
    public AjaxResult submitAlipay(@PathVariable String orderNo){
        //执行确认支付的请求：返回自动提交的表单字符串给浏览器，浏览器会自动提交表单 访问表单的action地址
        // <form action="http://www.baidu.com" method="get">
        String form = alipayService.submitAlipay(orderNo);
        return success(form);
    }
}
